from django.shortcuts import render
from django.http import JsonResponse
import json,datetime,time
from ping_test_app.out_excel import out_excel
# Create your views here.

from django.http import HttpResponse,HttpResponseRedirect
from ping_test_app.models import web_db

def excel(request):
    #生成表格
    out_excel()
    #重定向到表格下载
    return HttpResponseRedirect('/readout.xls')

def webtestapi(request):
    #API对接端口@
    # web_db.objects.get().save()
    web_api = web_db.objects.values()
   
    return JsonResponse({'ret': 0, 'retlist': list(web_api)})

def dispatcher(request):
    # 将请求参数统一放入request 的 params 属性中，方便后续处理

    # GET请求 参数在url中，同过request 对象的 GET属性获取
    if request.method == 'GET':
        request.params = request.GET

    # POST/PUT/DELETE 请求 参数 从 request 对象的 body 属性中获取
    elif request.method in ['POST','PUT','DELETE']:
        # 根据接口，POST/PUT/DELETE 请求的消息体都是 json格式
        request.params = json.loads(request.body)


    # 根据不同的action分派给不同的函数进行处理
    action = request.params['action']
    if action == 'list_customer':
        return listcustomers(request)
    elif action == 'add_customer':
        return addcustomer(request)
    elif action == 'modify_customer':
        return modifycustomer(request)
    elif action == 'del_customer':
        return deletecustomer(request)

    else:
        return JsonResponse({'ret': 1, 'msg': '不支持该类型http请求'})

def listcustomers(request):
    # 返回一个 QuerySet 对象 ，包含所有的表记录
    qs = web_db.objects.values()

    # 将 QuerySet 对象 转化为 list 类型
    # 否则不能 被 转化为 JSON 字符串
    retlist = list(qs)

    return JsonResponse({'ret': 0, 'retlist': retlist})

def addcustomer(request):

    info    = request.params['data']

    # 从请求消息中 获取要添加客户的信息
    # 并且插入到数据库中
    # 返回值 就是对应插入记录的对象 
    mydoing=info['doing']
    if mydoing == '打印机':
        mydoing = '打印机无法正常打印'
    elif mydoing == '业务系统':
        mydoing = '业务系统无法正常使用'
    elif mydoing == '门禁卡':
        mydoing = '添加门禁卡权限'
    elif mydoing == '黑屏':
        mydoing = '电脑开机黑屏无法正常显示'
    elif mydoing == '共享':
        mydoing = '共享文件无法正常使用'
    elif mydoing == '电话':
        mydoing = '电话无法正常使用'
        
    record = web_db.objects.create(officeid=info['officeid'],name=info['name'],doing=mydoing,clgc=mydoing,datetime=datetime.date.today(),datetime_hour=time.strftime('%H:%M'),datetime_hour_ok=time.strftime('%H:%M'),sjlx='终端支持',clsc='0',clgcs='陈荣璋',qy='执行局',llr='陈荣璋',clfs='现场处理',sjjb='普通',bzfs='电话',sjzt='解决')

    return JsonResponse({'ret': 0, 'id':record.id})

def deletecustomer(request):

    customerid = request.params['id']

    try:
        # 根据 id 从数据库中找到相应的客户记录
        customer = web_db.objects.get(id=customerid)
    except web_db.DoesNotExist:
        return  {
                'ret': 1,
                'msg': f'id 为`{customerid}`的客户不存在'
        }

    # delete 方法就将该记录从数据库中删除了
    customer.delete()

    return JsonResponse({'ret': 0})

def modifycustomer(request):

    # 从请求消息中 获取修改客户的信息
    # 找到该客户，并且进行修改操作
    
    customerid = request.params['id']
    newdata    = request.params['newdata']

    try:
        # 根据 id 从数据库中找到相应的客户记录
        customer = web_db.objects.get(id=customerid)
    except web_db.DoesNotExist:
        return  {
                'ret': 1,
                'msg': f'id 为`{customerid}`的客户不存在'
        }


    if 'name' in  newdata:
        customer.name = newdata['name']
    if 'officeid' in  newdata:
        customer.officeid = newdata['officeid']
    if 'doing' in  newdata:
        customer.doing = newdata['doing']

    # 注意，一定要执行save才能将修改信息保存到数据库
    customer.save()

    return JsonResponse({'ret': 0})